Performing updates to versions of a software presents significant challenges. For example, pushing out software updates to the various clients typically requires the clients to end and restart their current session in order for the software to continue functioning properly, which is disruptive for existing users in an active session. Further, the users may not want to use an updated version of the software where changes have been made to the software while the users are currently in an active session. It is undesirable for the software to suddenly appear different and inconsistent to the user while the user is still in the middle of the session. Moreover, it is inconvenient and inefficient, if not impossible at times, to wait until there are no existing user sessions using a current version of the software push out the software updates.